package com.algorithm.kmp;

/**
 * 暴力匹配算法
 */
public class ViolenceMatch {
	public static void main(String[] args) {
		String str1 = "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";
		String str2 = "尚硅谷你尚硅你";
		int index = violenceMatch(str1, str2);
		System.out.println(index);
	}

	/**
	 * 暴力匹配
	 *
	 * @param str1 源字符串
	 * @param str2 要匹配的字符串
	 * @return 第一个匹配到的位置索引
	 */
	public static int violenceMatch(String str1, String str2) {
		char[] s1 = str1.toCharArray();
		char[] s2 = str2.toCharArray();
		int s1Len = s1.length;
		int s2Len = s2.length;
		int i = 0;
		int j = 0;

		// // 保证匹配时，不越界
		while (i < s1Len && j < s2Len) {
			if (s1[i] == s2[j]) {
				i++;
				j++;
			} else {
				// 如果失配(即 str1[i]! = str2[j])，令 i = i - (j - 1)，j = 0。
				i = i - (j - 1);
				j = 0;
			}
		}
		// 判断是否匹配成功
		if (j == s2Len) {
			return i - j;
		}
		return -1;
	}
}
